package com.gitee.denger.mybatis.example.ext;

import com.gitee.denger.mybatis.example.ext.analytical.IExampleCriteriaValue;
import com.gitee.denger.mybatis.example.ext.util.ClassUtils;

import java.util.HashMap;
import java.util.Map;

/**
 * 存放工厂，省去频繁创建
 *
 * @author 登琼
 */
public final class ExampleCriteriaValueFactory {

    /**
     * 存放数据
     */
    private static Map<String, IExampleCriteriaValue> map = new HashMap<>(4, 1);

    private ExampleCriteriaValueFactory() {
    }

    /**
     * 获取该对象
     *
     * @param clazz class
     * @return 实例化对象
     */
    public static IExampleCriteriaValue getExampleCriteriaValue(Class<? extends IExampleCriteriaValue> clazz) {
        IExampleCriteriaValue exampleCriteriaValue = map.get(clazz.getName());
        if (null == exampleCriteriaValue) {
            exampleCriteriaValue = ClassUtils.newInstance(clazz);
            map.put(clazz.getName(), exampleCriteriaValue);
        }
        return exampleCriteriaValue;
    }

}
